gusucode.com > MATLAB与控制系统仿真实践 源代码 > MATLAB与控制系统仿真实践 源代码/第九章/eg9_7/sfuntmpl3.m
function [sys,x0,str,ts] = sfuntmpl3(t,x,u,flag) A=[-0.09 -0.01;1 0]; B=[1 -7;0 -2]; C=[0 2;1 -5]; D=[-3 0;1 0]; switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D); case 1, sys=mdlDerivatives(t,x,u,A,B,C,D); case {2,4,9}, sys=[]; case 3, sys=mdlOutputs(t,x,u,A,B,C,D); otherwise error(['Unhandled flag = ',num2str(flag)]); end function [sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D) sizes = simsizes; sizes.NumContStates = 2; sizes.NumDiscStates = 0; sizes.NumOutputs = 2; sizes.NumInputs = 2; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1; % at least one sample time is needed sys = simsizes(sizes); x0 = zeros(2,1); str = []; ts = [0 0]; function sys=mdlDerivatives(t,x,u,A,B,C,D) sys = A*x+B*u; function sys=mdlOutputs(t,x,u,A,B,C,D) sys = C*x+D*u; % % function sys=mdlTerminate(t,x,u) % % sys = [];